/*
 * @Author: wusd
 * @Date: 2022-02-28 11:42:39
 * @LastEditors: wusd
 * @LastEditTime: 2022-06-01 11:50:44
 * @Description:
 *
 */
/**
 * Created by jiachenpan on 16/11/18.
 */

export function isvalidUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}

/* 合法uri*/
export function validateURL(textval) {
  const urlregex =
    /^(https?|http?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return urlregex.test(textval)
}

/* 小写字母*/
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}
/* 小写字母*/
export function validatePercent(int) {
  return int >= 0 && int <= 100
}

/* 大写字母*/
export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 大小写字母*/
export function validatAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

/* 验证字符串是否是正整数*/
export function validateNumber(str) {
  const reg = /^[0-9]*[1-9][0-9]*$/
  return reg.test(str)
}

/* 验证密码至少 8 位，需包含数字、英文字母、特殊符号（~!@#$%^&*）*/
export function validateStrongPassword(str) {
  const reg = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,}$/
  return reg.test(str)
}

/* 验证字符串是否是邮箱 */
export function validateEmail(str) {
  const reg = /^([A-Za-z0-9_\-.])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,4})$/
  return reg.test(str)
}

/* 验证字符串是否是Json对象 */
export function validateIsJson(str) {
  if (typeof str === 'string') {
    try {
      // str.replace(/\s*/g,"") 去除str中多余的空格（空白处）
      const obj = JSON.parse(str.replace(/\s*/g, ''))
      // eslint-disable-next-line
      if (
        typeof obj === "object" &&
        Object.prototype.toString.call(obj) === "[object Object]"
      ) {
        return true
      } else {
        return false
      }
    } catch (e) {
      return false
    }
  } else {
    return false
  }
}

export const REGS = {
  /** 字符串 */
  string: /^.+$/,
  /** 手机号 */
  phone: /^1[3456789]\d{9}$/,
  /** 小于100，最多两位小数 */
  rate: /^(([1-9]?\d{0,1}(\.\d{1,2})?)|100|100\.(0){1,2})$/,
  /** 链接地址 */
  url: /^(https?|http?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/,
  /** 整数 */
  int: /^([1-9][\d]*|0)$/,
  /** 验证密码至少 8 位，需包含数字、英文字母、特殊符号（~!@#$%^&*） */
  psd: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,}$/,
  /** 邮箱 */
  email: /^([A-Za-z0-9_\-.])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,4})$/,
  /** 非负浮点数 */
  float: /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0)$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/,
  /**最多最多两位小数 */
  float_1: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,1})))$/,
  /**纯数字或者一位小数 */
  float_2: /^[+-]?(0|([1-9]\d*))(\.\d{1})?$/,
  /**正整数+小数 */
  number: /^([1-9][\d]*|0)(\.[\d]+)?$/,
  /** 小于等于1w的数字 */
  tenThousand: /(?!^0(\.0*)?$)(?!^0+[^0]?$)(^\d{1,4}(\.\d{1,2})?$)|(^10000$)/,
  /** 小于等于1w的正整数 */
  tenThousandInt: /(^[1-9]\d{0,3}?$)|(^10000$)/,
  tenMillion: /(?!^0(\.0*)?$)(?!^0+[^0]?$)(^\d{1,8}(\.\d{1,2})?$)/,
  plateNo:
    /^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1})$/
}
